package eu.irreality.dai.gameplay.controller.actions;

import eu.irreality.dai.gameplay.entities.AliveEntity;
import eu.irreality.dai.gameplay.world.GameWorld;
import eu.irreality.dai.ui.keyboard.KeyProcessor;
import eu.irreality.dai.util.exceptions.GameException;
import eu.irreality.dai.util.exceptions.InternalErrorException;

/**
 * Root class for the hierarchy of controller actions.
 * 
 */
public abstract class ControllerAction
{

    protected KeyProcessor kp;
    protected GameWorld world;
    protected AliveEntity entity;

    public ControllerAction(KeyProcessor kp, GameWorld world, AliveEntity entity)
    {
	this.world = world;
	this.entity = entity;
	this.kp = kp;
    }

    public abstract void execute() throws GameException, InternalErrorException;
}